// pages/book/book.js
import BookModel from '../../models/book'
import {random} from '../../utils/common'
const bookModel = new BookModel()

Page({

  /**
   * 页面的初始数据
   * 纯粹的callback 回调地狱 return
   * promise 多个异步等待合并
   * async await es7 小程序不支持
   * 一次调用，多次调用服务器API 链式调用 3个API a1, a2, a3
   */
  data: {
    books: [],
    searching: false,
    more: ''
  },

  /**
   * Promise 对象 函数
   * 生命周期函数--监听页面加载
   * 对象可以保存状态
   * 函数不可以（闭包函数可以保存状态）
   */
  onLoad: function (options) {
    bookModel.getHotList()
      .then(res=>{
        this.setData({
          books: res
        })
      })
  },
  onSearch(){
    this.setData({
      searching: true
    })
  },
  onCancel(event){
    this.setData({
      searching: false
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom(){
    this.setData({
      more: random(8)
    })
  },

  /**
   * 用户点击右上角分享
   * 
   *  // 第一步 new Promise()
    const promise = new Promise((resolve, reject)=>{
      // 第二步 把异步代码放到异步函数中
      // promise三种状态 pending进行中, fulfilled已成功, rejected已失败
      wx.getSystemInfo({
        success: (res)=>{
          // 转换promise的状态
          resolve(res)
        },
        fail: (err)=>{
          reject(err)
        }
      })
    })

    promise.then((res)=>{
      console.log(res)
    }, (err)=>{
      console.log(err)
    })
   */
  onShareAppMessage: function () {
    this.setData({
      more: random(9)
    })
  }
})


// promise的错误用法
    // const hotList = bookModel.getHotList()
    // hotList.then((res)=>{
    //   console.log(res)
    //   bookModel.getMyBookCount()
    //     .then(res=>{
    //       console.log(res)
    //     })
    // })
    // 链式promise的使用方法
    // bookModel.getHotList()
    //   .then(res=>{
    //     console.log(res)
    //     return bookModel.getMyBookCount()
    //   })
    //   .then(res=>{
    //     console.log(res)
    //   })